SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TMDOCU_PROV_Q05]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                     --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---M÷dulo               : Empresa                    --*/  
/*---Programa             : Registro COMPRAS           --*/  
/*---Script               : tmdocu.sql                 --*/  
/*---Nombre SP            : SP_TMDOCU_PROV_Q05         --*/  
/*---Desarrollado por     : Carlos Marquez Escobar     --*/  
/*---Fecha Creaci÷n       : 19/09/2005                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi÷n              : 2005                       --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     : Carlos Mÿrquez Escobar     --*/  
/*---Fecha Modificaci÷n   : 01/09/2006                 --*/   
/*---Detalle Modificaci÷n : Nuevo Reg. Oficial          --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TMDOCU_PROV_Q05                      --*/  
/*---Grant Execute on SP_TMDOCU_PROV_Q05 to public         --*/   
/*---  
--Correlativo
  Create Table #TWROFI_COMP_0001 (  
   NU_CORR_COMP  VarChar(20)  Null  )  
--Filtro
  Create Table #TWROFI_COMP_0002 (  
   CO_PROV  VarChar(20)  Null,  
   CO_TIPO_DOCU  VarChar(03)  Null,  
   NU_DOCU_PROV  VarChar(20)  Null,  
   NU_CORR_COMP  VarChar(20)  Null  )  
--Tabla Trabajo
Create Table #TWROFI_COMP (  
	DE_TIPO_REPO	VarChar(20) Null,  

	NU_CORR_COMP	VarChar(20) Null,  
	CO_TIPO_OPER	VarChar(03) Null,  
	CO_OPRC_CNTB	VarChar(03) Null,  
	DE_OPRC			VarChar(50) Null,  
	NU_ASTO			VarChar(10) Null,  
	CO_MONE			VarChar(3)  Null,  

	FE_EMIS			DateTime  Null,  
	FE_VCTO			DateTime  Null,  
	CO_SUNA			VarChar(2)  Null,  
	CO_TIPO_DOCU	VarChar(3)  Null,  
	NU_DOCU_PROV	VarChar(20) Null,  

	NU_RUCS			VarChar(20) Null,  
	NO_AUXI			VarChar(100) Null,  

	IB_BRUT_AFEC	Numeric(16,4) Null, --h
	IB_OPGR_CCRF	Numeric(16,4) Null, --i
	IB_OPGR_SCRF	Numeric(16,4) Null, --j
	IB_OPER_INAF	Numeric(16,4) Null, --k 
	IB_SELE_CONS	Numeric(16,4) Null, --l
	IB_RECI_HONO	Numeric(16,4) Null, --m

	IG_OPER_GRAV	Numeric(16,4) Null,  
	IG_OPGR_CCRF	Numeric(16,4) Null, --i
	IG_OPGR_SCRF	Numeric(16,4) Null, --q

	IM_OTRI_CARG	Numeric(16,4) Null, --q

	IR_CUAR_CATE   Numeric(16,4)  Null,  
	IM_IESS    Numeric(16,4)  Null,  

	IM_TOTA   Numeric(16,4)  Null,  
	IM_AJUS   Numeric(16,4)  Null,  
	FA_TIPO_CAMB  Numeric(15,6)  Null,  
	FA_CAMB_EXTR  Numeric(15,6)  Null,  
	FA_CAMB  Numeric(15,6)  Null,  

	CO_IMP1   VarChar(03)  Null,  
	PC_IMP1   Numeric(9,4)  Null,  
	IM_IMP1   Numeric(16,4)  Null,  
	CO_IMP2   VarChar(03)  Null,  
	PC_IMP2   Numeric(9,4)  Null,  
	IM_IMP2   Numeric(16,4)  Null,  
	CO_IMP3   VarChar(03)  Null,  
	PC_IMP3   Numeric(9,4)  Null,  
	
	ST_SIGN   VarChar(1) Null,  
	CO_ESTA_DOCU  VarChar(3)  Null,  
	CO_SUNA_ORIG  VarChar(2)  Null,  
	NU_DOCU_ORIG  VarChar(20)  Null,  
	FE_DOCU_ORIG  DateTime  Null,  

	NU_DEPO_DETR  VarChar(20)  Null,  
	FE_DEPO_DETR  DateTime  Null,  
	NU_COMP_SERV  VarChar(20)  Null,  
	FL_RETE   VarChar(1)  Null  )  

insert Into #TWROFI_COMP_0002
(CO_PROV,CO_TIPO_DOCU,NU_DOCU_PROV)
Select CO_PROV,CO_TIPO_DOCU,NU_DOCU_PROV From TMDOCU_PROV
 Where  CO_EMPR  = '01'
	AND 	YEAR(FE_REGI_COMP) = 2006
	AND 	MONTH(FE_REGI_COMP) = 1

SP_TMDOCU_PROV_Q05 '01', 'O'    
--*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR      TD_VC_002,   
 @ISTI_REPO      TD_VC_001  
--   
As  
DECLARE    
@VSCO_MONE_NACI  TD_VC_003,  
@VSCO_MONE_EXTR  TD_VC_003,  
@VSTI_CAMB   TD_VC_001,  
@VSTI_ORIG   TD_VC_001,  
@VSCO_TIAU_PROV  TD_VC_001,  
@VNIM_MAXI_NRET  TD_NU_016_004,  
@VNNU_REGI_ELIM  TD_IN_001  
  
Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
From TTFACA_OPCI        
Where CO_EMPR = @ISCO_EMPR        
And CO_MODU = 'TEEM0001'        
And CO_MENU = 'FTEEMBA'        
        
If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )      
 Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG,  
		@VSCO_MONE_NACI = CO_MONE_DEFA, @VSCO_MONE_EXTR = CO_MONE_EXTR,  
		@VSCO_TIAU_PROV = CO_TIAU_PROV,  
		@VNIM_MAXI_NRET = IM_MAXI_NRET
 From TMPARA_TESO        
 Where CO_EMPR = @ISCO_EMPR        
Else        
 Select @VSCO_MONE_NACI = CO_MONE_DEFA,   
		@VSCO_MONE_EXTR = CO_MONE_EXTR,  
		@VSCO_TIAU_PROV = CO_TIAU_PROV,  
		@VNIM_MAXI_NRET = IM_MAXI_NRET  
 From TMPARA_TESO        
 Where CO_EMPR = @ISCO_EMPR  
  
  
if @ISTI_REPO = 'O'  
Begin ---Inicio Reporte O F I C I A L ---  
 Insert Into #TWROFI_COMP  
 (DE_TIPO_REPO, CO_SUNA, 		FE_EMIS, 		NU_CORR_COMP, 	CO_TIPO_OPER, NU_ASTO, 		NU_DOCU_PROV, 
	NU_RUCS, 		NO_AUXI,  
  CO_TIPO_DOCU, CO_MONE,
  IB_BRUT_AFEC, IB_OPGR_CCRF,	IB_OPGR_SCRF,	IB_OPER_INAF,	IB_SELE_CONS,	IB_RECI_HONO,
  IG_OPER_GRAV,	IG_OPGR_CCRF,	IG_OPGR_SCRF,	IM_OTRI_CARG,	IR_CUAR_CATE,	IM_IESS,
  IM_TOTA,	FA_TIPO_CAMB,
  FA_CAMB_EXTR, CO_IMP1, 		PC_IMP1,   		CO_IMP2, 
  PC_IMP2,   	CO_IMP3, 		PC_IMP3,  		ST_SIGN, 		CO_ESTA_DOCU, CO_SUNA_ORIG, 
NU_DOCU_ORIG,   FE_DOCU_ORIG, 	NU_DEPO_DETR, 
  FE_DEPO_DETR, NU_COMP_SERV, 	FL_RETE)
 Select     
  'REG_COMPRAS' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,  
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,  
TMDOCU_PROV.NU_DOCU_PROV As NUMERO_DOCUMENTO,  
  T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,  
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,  
  ---B1.IB_BRUT_AFEC---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    (TMDOCU_PROV.IM_IMP1 * 100) / TMDOCU_PROV.PC_IMP1,   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)    
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00   
   Else   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    TMDOCU_PROV.IM_BRUT_AFEC -   
    IsNull(TMDOCU_PROV.IM_SCRF,0) +  
    PatIndex(TMDOCU_PROV.ST_AFEC_GAFI, 'S') * TMDOCU_PROV.IM_GAFI -   
    (TMDOCU_PROV.IM_DCT1 + TMDOCU_PROV.IM_DCT2),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
  End As IB_BRUT_AFEC,  
  ---B2.IB_OPGR_CCRF---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00  
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00  
   Else Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    IsNull(TMDOCU_PROV.IM_SCRF,0),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
  End As IB_OPGR_CCRF,  
  ---B3.IB_OPGR_SCRF---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00  
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    IsNull(TMDOCU_PROV.IM_BRUT_AFEC,0),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
   Else 0.00  
  End As IB_OPGR_SCRF,  
  ---B4.IB_OPER_INAF---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00  
   When T3.ST_DOCU_0027 = 'S' Then --0.00  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    IsNull(TMDOCU_PROV.IM_BRUT_AFEC,0) + IsNull(TMDOCU_PROV.IM_BRUT_INAF,0),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00  
   Else   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    TMDOCU_PROV.IM_BRUT_INAF +   
    PatIndex(TMDOCU_PROV.ST_AFEC_GAFI, 'N') * TMDOCU_PROV.IM_GAFI +   
    PatIndex(TMDOCU_PROV.ST_AFEC_FLET, 'N') * TMDOCU_PROV.IM_FLET +   
    PatIndex(TMDOCU_PROV.ST_AFEC_MORA, 'N') * TMDOCU_PROV.IM_MORA,   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
  End As IB_OPER_INAF,  
  ---B5.IB_SELE_CONS---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00   
   Else   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    PatIndex(TMDOCU_PROV.ST_AFEC_ISC1, 'S') * IsNull(TMDOCU_PROV.IM_ISC1,0),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
  End As IB_SELE_CONS,
  ---B6.IB_RECI_HONO---  
  0.00 As IB_RECI_HONO,

  ---I.1.IG_OPER_GRAV---  
  Case   
   When T3.ST_DOCU_0026 = 'S' Then  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    IsNull(TMDOCU_PROV.IM_IMP1,0),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00   
   Else   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +  
    (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +  
    (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
  End As IG_OPER_GRAV,  
  ---I.2.IG_OPGR_CCRF---   
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00  
   When T3.ST_DOCU_0027 = 'S' Then 0.00  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then 0.00   
   Else   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    ( ( TMDOCU_PROV.IM_SCF1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
  End As IG_OPGR_CCRF,  
  ---I.3.IG_OPGR_SCRF---   
  Case   
   When T3.ST_DOCU_0026 = 'S' Then 0.00  
   When T3.ST_DOCU_0027 = 'S' Then   
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    ( ( TMDOCU_PROV.IM_SCF1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  
   When T3.ST_DOCU_0023 = 'S' Or T3.ST_DOCU_0024 = 'S' Then  
    Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
    ( ( TMDOCU_PROV.IM_SCF1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IG' ) ) +  
     ( TMDOCU_PROV.IM_SCF3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IG' ) ) ),   
    @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)   
   Else 0.00   
  End IG_OPGR_SCRF,  

  0.00 As IM_OTRI_CARG,     
  0.00 As IR_CUAR_CATE,  
   
  0.00 As IM_IESS,  
   
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
  TMDOCU_PROV.IM_TOTA,   
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) As IM_TOTA,  
   
  TMDOCU_PROV.FA_TIPO_CAMB, TMDOCU_PROV.FA_CAMB_EXTR,   
  TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,  
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,  
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,  
   
  T3.ST_SIGN As SIGNO,  
   
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,  
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,   
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,   
  TMDOCU_PROV.NU_COMP_SERV,  
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE,  TMDOCU_PROV.FE_EMIS,  @VNIM_MAXI_NRET, 
TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,  
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB, 
@VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,  
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION'
 From  TMDOCU_PROV
 Left Outer Join TTDOCU_CNTB T5 
 On TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3  
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR  
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR  
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV  
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV  
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU  
     And T3.ST_DOCU_0010 = 'N'  
     And T3.ST_REGI_COMP = 'S'  
     And Exists ( Select #TWROFI_COMP_0002.NU_CORR_COMP  
      From #TWROFI_COMP_0002  
      Where   
      #TWROFI_COMP_0002.CO_PROV = TMDOCU_PROV.CO_PROV And  
      #TWROFI_COMP_0002.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And  
      #TWROFI_COMP_0002.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV  
     )  
 Union All
 Select     
  'REG_RECxHON' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,  
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,  
TMDOCU_PROV.NU_DOCU_PROV As NUMERO_DOCUMENTO,  
  T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,  
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,  
  ---B1.IB_BRUT_AFEC---  
  0.00 As IB_BRUT_AFEC,  
  ---B2.IB_OPGR_CCRF---  
  0.00 As IB_OPGR_CCRF,  
  ---B3.IB_OPGR_SCRF---  
  0.00 As IB_OPGR_SCRF,  
  ---B4.IB_OPER_INAF---  
  0.00 As IB_OPER_INAF,  
  ---B5.IB_SELE_CONS---  
  0.00 As IB_SELE_CONS,
  ---B6.IB_RECI_HONO---  
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
   TMDOCU_PROV.IM_BRUT_AFEC +  TMDOCU_PROV.IM_BRUT_INAF + TMDOCU_PROV.IM_GAFI - TMDOCU_PROV.IM_DCT1 - TMDOCU_PROV.IM_DCT2,  
   @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) As IB_RECI_HONO,

  ---I.1.IG_OPER_GRAV---  
  0.00 As IG_OPER_GRAV,  
  ---I.2.IG_OPGR_CCRF---   
  0.00 As IG_OPGR_CCRF,  
  ---I.3.IG_OPGR_SCRF---   
  0.00 As IG_OPGR_SCRF,  

  0.00 As IM_OTRI_CARG,     
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
  (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 2), 'IR' ) ) +  
  (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 2), 'IR' ) ) +  
  (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 2), 'IR' ) ) ),   
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) As IR_CUAR_CATE,  
   
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
  (( TMDOCU_PROV.IM_IMP1 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP1, '0'), 1, 3), 'IES' ) ) +  
  (  TMDOCU_PROV.IM_IMP2 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP2, '0'), 1, 3), 'IES' ) ) +  
  (  TMDOCU_PROV.IM_IMP3 * PATINDEX( SUBSTRING( IsNull( TMDOCU_PROV.CO_IMP3, '0'), 1, 3), 'IES' ) ) ),   
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2)  As IM_IESS,  
   
  Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI, TMDOCU_PROV.FE_EMIS,  
  TMDOCU_PROV.IM_TOTA,   
  @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, TMDOCU_PROV.FA_TIPO_CAMB), 2) As IM_TOTA,  
   
  TMDOCU_PROV.FA_TIPO_CAMB, TMDOCU_PROV.FA_CAMB_EXTR,   
  TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,  
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,  
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,  
   
  T3.ST_SIGN As SIGNO,  
   
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,  
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,   
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,   
  TMDOCU_PROV.NU_COMP_SERV,  
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE,  TMDOCU_PROV.FE_EMIS,  @VNIM_MAXI_NRET, 
TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,  
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB, 
@VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,  
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION'
 From  TMDOCU_PROV
 Left Outer Join TTDOCU_CNTB T5 
 On TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3  
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR  
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR  
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV  
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV  
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU  
     And T3.ST_DOCU_0010 = 'S'  
     And T3.ST_REGI_COMP = 'S'  
     And Exists ( Select #TWROFI_COMP_0002.NU_CORR_COMP  
      From #TWROFI_COMP_0002  
      Where   
      #TWROFI_COMP_0002.CO_PROV = TMDOCU_PROV.CO_PROV And  
      #TWROFI_COMP_0002.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And  
      #TWROFI_COMP_0002.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV  
     )  
  
 /*********** Trabajo en la Tabla Temporal calculo Col Ajustes y Tipo de Cambio **************/  
 Update #TWROFI_COMP  
 Set  FA_CAMB = Case CO_MONE  
      When @VSCO_MONE_NACI Then 1.00  
      When @VSCO_MONE_EXTR Then FA_TIPO_CAMB  
      Else FA_CAMB_EXTR  
       End,  
   IM_AJUS = Case DE_TIPO_REPO  
      When 'REG_COMPRAS' Then Case PC_IMP1 When 0.00 Then 0.00 Else ((IsNull(IG_OPER_GRAV,0) + IsNull(IG_OPGR_CCRF,0)) / 
PC_IMP1)*100.00 - IsNull(IB_BRUT_AFEC,0) End  
      When 'REG_RECxHON' Then Case When PC_IMP1 = 0.00 Or IM_IESS = 0.00 Then 0.00 Else ((IsNull(IM_IESS,0)) / 
PC_IMP1)*100.00 - IsNull(IB_SELE_CONS,0) End  
      Else 0.00  
       End,  
   CO_OPRC_CNTB= dbo.FN_COOPRC_CNTB_Q01(@ISCO_EMPR, CO_TIPO_OPER),  
   DE_OPRC  = dbo.FN_COOPRC_CNTB_Q02(@ISCO_EMPR, CO_TIPO_OPER)  
  
 /*********** Incluir Registros Eliminados  **************/  
 Select @VNNU_REGI_ELIM = Count(NU_CORR_COMP)  
 From #TWROFI_COMP_0001  
  
 If IsNull(@VNNU_REGI_ELIM, 0 ) > 0 -- Existen Regitros Eliminado y seleciono la Opcion Incluir Reg Eliminados  
  Insert Into #TWROFI_COMP  
  (DE_TIPO_REPO, CO_SUNA, FE_EMIS, NU_CORR_COMP, NU_ASTO, NU_DOCU_PROV, NU_RUCS, NO_AUXI,  
  CO_TIPO_DOCU, CO_MONE,  
  IB_BRUT_AFEC , IB_OPGR_CCRF , IB_OPGR_SCRF, IB_OPER_INAF ,  
  IB_SELE_CONS ,  
  IG_OPER_GRAV, IG_OPGR_CCRF ,    
  IR_CUAR_CATE , IM_IESS ,  
  IM_TOTA,   
  FA_TIPO_CAMB, FA_CAMB_EXTR,   
  CO_IMP1, PC_IMP1,  
  CO_IMP2, PC_IMP2,  
  CO_IMP3, PC_IMP3,  
  ST_SIGN, CO_ESTA_DOCU, CO_SUNA_ORIG, NU_DOCU_ORIG,  
  FE_DOCU_ORIG, NU_DEPO_DETR, FE_DEPO_DETR, NU_COMP_SERV, FL_RETE)  
  Select 'REG_COMPRAS', '', Null, SUBSTRING(NU_CORR_COMP, 1, 10), '', '', '', '**ANULADO**',  
    '', '',  
    0.00 , 0.00 , 0.00, 0.00 ,  
    0.00 ,  
    0.00 , 0.00 , 
    0.00 , 0.00 ,  
    0.00 ,   
    1.00, 1.00,   
    '', 0.00,  
    '', 0.00,  
    '', 0.00,  
    'S', 'ANU', '', '',  
    Null, '', Null, '', Null
  From #TWROFI_COMP_0001  
  Where NOT EXISTS(  Select #TWROFI_COMP.NU_CORR_COMP  
                             From #TWROFI_COMP  
        Where #TWROFI_COMP.NU_CORR_COMP = #TWROFI_COMP_0001.NU_CORR_COMP)  
  
  
End  ---Fin Reporte Oficial   
Else  
Begin ---Inicio Reporte en Base a la Moneda Origen  
 Insert Into #TWROFI_COMP  
 (DE_TIPO_REPO, CO_SUNA, FE_EMIS, NU_CORR_COMP, CO_TIPO_OPER, NU_ASTO, NU_DOCU_PROV, NU_RUCS, NO_AUXI,  
 CO_TIPO_DOCU, CO_MONE,  
 IB_BRUT_AFEC , IB_OPGR_CCRF , IB_OPGR_SCRF, IB_OPER_INAF ,  
 IB_SELE_CONS ,  
 IG_OPER_GRAV, IG_OPGR_CCRF , IG_OPGR_SCRF ,   
 IR_CUAR_CATE , IM_IESS ,  
 IM_TOTA,   
 FA_TIPO_CAMB, FA_CAMB_EXTR,   
 CO_IMP1, PC_IMP1,  
 CO_IMP2, PC_IMP2,  
 CO_IMP3, PC_IMP3,  
 ST_SIGN, CO_ESTA_DOCU, CO_SUNA_ORIG, NU_DOCU_ORIG,  
 FE_DOCU_ORIG, NU_DEPO_DETR, FE_DEPO_DETR, NU_COMP_SERV, FL_RETE)  
 Select     
  'REG_COMPxMON' As TIPO, T3.CO_SUNA As CODIGO_SUNAT, TMDOCU_PROV.FE_EMIS As FECHA_EMISION,  
  TMDOCU_PROV.NU_CORR_COMP As CORRELATIVO, TMDOCU_PROV.CO_TIPO_OPER As CO_TIPO_OPER, TMDOCU_PROV.NU_ASTO As NRO_ASIENTO,  
TMDOCU_PROV.NU_DOCU_PROV As NUMERO_DOCUMENTO,  
  T2.NU_RUCS As RUC_PROVEEDOR, T2.NO_AUXI As NOMB_PROV,  
  TMDOCU_PROV.CO_TIPO_DOCU, TMDOCU_PROV.CO_MONE As MONE,  
  ---B1.---  
  Case T3.ST_SIGN   
   When 'S'  Then  TMDOCU_PROV.IM_BRUT_AFEC  
   Else TMDOCU_PROV.IM_BRUT_AFEC * -1   
  End As IB_BRUT_AFEC,  
  ---B2.---  
  0.00 As IB_OPGR_CCRF,  
  ---B3.---  
  0.00 As IB_OPGR_SCRF,  
  ---B4.---  
  Case T3.ST_SIGN   
   When 'S'  Then  TMDOCU_PROV.IM_BRUT_INAF  
   Else TMDOCU_PROV.IM_BRUT_INAF * -1   
  End As IB_OPER_INAF,  
  ---B5.---  
  0.00 As IB_SELE_CONS,   
  ---I.1---  
  Case   
   When T3.CO_SUNA = '91' OR T3.CO_SUNA = '99' Then   
    Case TMDOCU_PROV.CO_MONE  
     When @VSCO_MONE_EXTR Then Round( ( ( TMDOCU_PROV.IM_BRUT_INAF )* TMDOCU_PROV.FA_TIPO_CAMB ), 2 )  
     Else TMDOCU_PROV.IM_BRUT_INAF       
    End  
   Else  
    Case T3.ST_SIGN   
     When 'S' Then IsNull(TMDOCU_PROV.IM_IMP1,0) + IsNull(TMDOCU_PROV.IM_SCF1,0)  
     Else (IsNull(TMDOCU_PROV.IM_IMP1,0) + IsNull(TMDOCU_PROV.IM_SCF1,0) )*-1  
    End  
  End As IG_OPER_GRAV,  
  ---I.2---   
  Case T3.ST_SIGN   
   When 'S' Then IsNull(TMDOCU_PROV.IM_IMP2,0) + IsNull(TMDOCU_PROV.IM_SCF2,0)  
   Else (IsNull(TMDOCU_PROV.IM_IMP2,0) + IsNull(TMDOCU_PROV.IM_SCF2,0) )*-1  
  End As IG_OPGR_CCRF,  
  ---I.3---   
  0.00 As IG_OPGR_SCRF,  
   
  0.00 As IR_CUAR_CATE,  
   
  0.00 As IM_IESS,  
   
  Case T3.ST_SIGN   
   When 'S' Then IsNull(TMDOCU_PROV.IM_TOTA,0)  
   Else IsNull(TMDOCU_PROV.IM_TOTA,0)*-1  
  End As IM_TOTA,  
   
  TMDOCU_PROV.FA_TIPO_CAMB, TMDOCU_PROV.FA_CAMB_EXTR,   
  TMDOCU_PROV.CO_IMP1, TMDOCU_PROV.PC_IMP1,  
  TMDOCU_PROV.CO_IMP2, TMDOCU_PROV.PC_IMP2,  
  TMDOCU_PROV.CO_IMP3, TMDOCU_PROV.PC_IMP3,  
   
  T3.ST_SIGN As SIGNO,  
   
  TMDOCU_PROV.CO_ESTA_DOCU As ESTADO,  
  T5.CO_SUNA, TMDOCU_PROV.NU_DOCU_ORIG, TMDOCU_PROV.FE_DOCU_ORIG,   
  TMDOCU_PROV.NU_DEPO_DETR As COMPROBANTE, TMDOCU_PROV.FE_DEPO_DETR As FE_DEPO_DETRACCION,   
  TMDOCU_PROV.NU_COMP_SERV,  
  DBO.FU_RETE_FLAG( TMDOCU_PROV.CO_EMPR, T2.ST_RETE, T2.ST_BCON, T3.ST_RETE,  TMDOCU_PROV.FE_EMIS,  @VNIM_MAXI_NRET, 
TMDOCU_PROV.IM_IMP1, T3.ST_DOCU_0004,  
  dbo.FN_TCFACT_CAMB_Q02(TMDOCU_PROV.CO_MONE, @VSCO_MONE_NACI,TMDOCU_PROV.FE_EMIS, TMDOCU_PROV.IM_TOTA, @VSTI_CAMB, 
@VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR,  
  TMDOCU_PROV.FA_TIPO_CAMB))  'RETENCION'
 From  TMDOCU_PROV
 Left Outer Join TTDOCU_CNTB T5  
 On  TMDOCU_PROV.TI_DOCU_ORIG = T5.TI_DOCU, TMAUXI_EMPR T2, TTDOCU_CNTB T3        
 Where  TMDOCU_PROV.CO_EMPR  = @ISCO_EMPR  
     And T2.CO_EMPR = TMDOCU_PROV.CO_EMPR  
     And T2.TI_AUXI_EMPR = @VSCO_TIAU_PROV  
     And T2.CO_AUXI_EMPR = TMDOCU_PROV.CO_PROV  
     And T3.TI_DOCU = TMDOCU_PROV.CO_TIPO_DOCU  
     And T3.ST_DOCU_0010 = 'S'  
     And T3.ST_REGI_COMP = 'S'  
     And Exists ( Select #TWROFI_COMP_0002.NU_CORR_COMP  
      From #TWROFI_COMP_0002  
      Where   
      #TWROFI_COMP_0002.CO_PROV = TMDOCU_PROV.CO_PROV And  
      #TWROFI_COMP_0002.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU And 
      #TWROFI_COMP_0002.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV  
     )  
  
 Update #TWROFI_COMP  
 Set  FA_CAMB = Case CO_MONE  
      When @VSCO_MONE_NACI Then FA_TIPO_CAMB  
      When @VSCO_MONE_EXTR Then FA_TIPO_CAMB  
      Else FA_CAMB_EXTR  
       End,  
   IM_AJUS = Case DE_TIPO_REPO  
      When 'REG_COMPRAS' Then Case PC_IMP1 When 0.00 Then 0.00 Else ((IsNull(IG_OPER_GRAV,0) + IsNull(IG_OPGR_CCRF,0)) / 
PC_IMP1)*100.00 - IsNull(IB_BRUT_AFEC,0) End  
      When 'REG_RECxHON' Then Case When PC_IMP1 = 0.00 Or IM_IESS = 0.00 Then 0.00 Else ((IsNull(IM_IESS,0)) / 
PC_IMP1)*100.00 - IsNull(IB_SELE_CONS,0) End  
      Else 0.00  
       End  
  
  
End  ---Fin Reporte Base a la Moneda Origen  
  
  
  
RETURN  
/*---------------- Fin ----------------------------*/


GO
